/* 封装axios用于发送请求 */
import axios from 'axios'
import { Message } from 'element-ui'
import store from "@/store";

import router from '@/router'
// 创建一个新的axios实例
const request = axios.create({
  // 这里的接口地址后续可能会变化 以最新的为准 
  baseURL: 'http://82.157.206.155:8888/api/private/v1/',
  timeout: 15000
})


// 添加请求拦截器
request.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  const { token } = store.state.user.userInfo || {};
  // console.log(token);
  if (token) {
    config.headers.Authorization = token;
  }
  // 在发送请求之前做些什么
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})

let  statusSuccessCode = [200, 201, 203,202]

// 添加响应拦截器
request.interceptors.response.use(function (response) {
  // console.log(response)
  // 对响应数据做点什么
  let { status, msg } = response.data.meta
  // console.log(response, 'ljq')
  // console.log(status)
  //  状态码里面 只要有一 个是 200  201  204 都是成功 
  if ( ! statusSuccessCode.includes(status) ) {
    // 一般的失败 给个失败的提示   
    // token 过期了   我们需要用户重新登录 
    // 会让用户跳转到 登录页  不需要抛出异常 
    if(status ==  400) {
      router.push('/login')
    }  
 
    Message.error(msg)
    return Promise.reject(msg )
  }

  return response.data
}, function (error) {
  // 对响应错误做点什么
  return Promise.reject(error)
})

export default request